/**
 * @desc 根据pid返回树形结构
 * @param {array} list 需要转换的数据
 * @return {arrayTree} 返回树形结构
 * */

export function getTreeData(list) {
    let arr = [];

    function toTree(id, array, list) {
        let newArr = list.filter((item) => item.menuParentId == id);
        newArr.forEach((item) => {
            let arr = [];
            item.key = item.menuId;
            if (item.menuId != id && toTree(item.menuId, arr, list).length > 0) {
                item.children = Array.from(new Set(toTree(item.menuId, arr, list)));
            }
            array.push(item);
        });
        return array;
    }
    toTree(-1, arr, list);
    if (arr.length <= 0) {
        return null;
    }
    return arr;
}
/*
* @Description: 多级树按序号排序
* @Author: Thl
* @Date: 2024-05-17
* @LastEditTime: 2024-05-17
*/
export function sortTree(tree) {  
    // 对每个节点的子节点数组进行排序  
    function sortChildren(nodes) {  
        if (!Array.isArray(nodes)) return;  
        nodes.sort((a, b) => a.sorted - b.sorted); 
        nodes.forEach(node => sortChildren(node.children)); // 递归排序子节点  
    }  
  
    // 开始排序  
    sortChildren(tree); // 假设 tree 有一个 children 属性  
    return tree; // 返回排序后的树  
}  